Grids¶

🎨 print(..., end=' ')¶

In [1]:
for i in range(4):
    print(i)
0
1
2
3
In [8]:
for i in range(4):
    print(i, end=' ')
0 1 2 3 
In [9]:
for i in range(4):
    print(i, end='**')
0**1**2**3**
In [10]:
for i in range(4):
    print(i, end='\n')
0
1
2
3

🎨 Grids¶

In [11]:
numbers = [
    [1, 2, 3],
    [4, 5, 6]
]

numbers
Out[11]:
[[1, 2, 3], [4, 5, 6]]

NOTES

  • Syntax: multiline representation of a list
  • Flat version (list of lists)
  • Draw this out
    • Visual: list of rows, row of items
    • Memory: heap, values, lists, references

🖌 Print Grid¶

In [12]:
def print_grid(grid: list[list]):
    for row in grid:
        for item in row:
            print(item, end=' ')
        print()

NOTES

  • discuss the code before you run it: what will it do?
In [13]:
print_grid(numbers)
1 2 3 
4 5 6 

🖌 Make Grid¶

In [14]:
def empty_grid(num_rows, num_columns, value=None):
    new_grid = []
    for row in range(num_rows):
        new_row = []
        for column in range(num_columns):
            new_row.append(value)
        new_grid.append(new_row)
    return new_grid
In [15]:
def empty_grid(num_rows, num_columns, value=None):
    new_grid = []
    while len(new_grid) < num_rows:
        new_row = []
        while len(new_row) < num_columns:
            new_row.append(value)
        new_grid.append(new_row)
    return new_grid
In [22]:
grid = empty_grid(2, 3, value='?')
grid
Out[22]:
[['?', '?', '?'], ['?', '?', '?']]
In [23]:
print_grid(grid)
? ? ? 
? ? ? 
In [24]:
print_grid(empty_grid(4, 6))
None None None None None None 
None None None None None None 
None None None None None None 
None None None None None None 
In [25]:
print_grid(empty_grid(4, 6, value='*'))
* * * * * * 
* * * * * * 
* * * * * * 
* * * * * * 

🖌 Read Grid¶

grid_example.txt¶

In [26]:
def readgrid(filename) -> list[list[str]]:
    with open(filename) as file:
        return [line.split() for line in file.readlines()]
    
    
def readgrid(filename):
    with open(filename) as file:
        lines: list[str] = file.readlines()
    
    grid = []
    
    for line in lines:
        grid.append(line.split())

    return grid
In [30]:
grid = readgrid('grid_example.txt')
print_grid(grid)
#grid
. * . ! . * . 
* . ! . ! . * 
. * . ! . * . 

🎨 Coordinates¶

In [31]:
grid = empty_grid(3, 5, value='.')

print_grid(grid)
print()

grid[0][4] = '*'
grid[1][2] = '?'
grid[2][1] = '!'

print_grid(grid)
. . . . . 
. . . . . 
. . . . . 

. . . . * 
. . ? . . 
. ! . . . 

🖌 Check Grid¶

In [32]:
def has_value(grid, row, col, value):
    if row < 0 or row >= len(grid):
        return False
    
    if col < 0 or col >= len(grid[row]):
        return False
    
    return grid[row][col] == value
In [33]:
print_grid(grid)
. . . . * 
. . ? . . 
. ! . . . 
In [34]:
has_value(grid, 0, 0, '*')
Out[34]:
False
In [35]:
has_value(grid, -1, 0, '*')
Out[35]:
False
In [36]:
has_value(grid, 1, 2, '?')
Out[36]:
True

👨🏽‍🎨 Grid Game¶

Your homework assignment will be to finish the implementation of grid_game.py.

The game logic is implemented for you. You just need to fill in a few functions that work with grids.

Have fun!

Key Ideas¶

  • Grids
    • print
    • make
    • read
    • check
  • Coordinates